package com.atguigu.delivery.dao.impl;

import com.atguigu.delivery.dao.BaseDao;
import com.atguigu.delivery.dao.api.SysUserDao;
import com.atguigu.delivery.entity.SysUser;

import java.util.List;

public class SysUserDaoImpl extends BaseDao implements SysUserDao {
    @Override
    public SysUser selectUserByAccountAndPassword(String account, String encodedPassword) {

        // 1、编写 SQL 语句
        String sql = "select id, username, password, nickname from sys_user where username=? and password=?";

        // 2、调用父类的方法执行查询
        List<SysUser> sysUserList = baseQuery(SysUser.class, sql, account, encodedPassword);

        // 3、如果查询结果 List 集合长度大于 1，说明系统数据有错误，抛异常让系统管理员看到
        if (sysUserList.size() > 1) {
            throw new RuntimeException("系统数据有误，多个用户拥有相同的账号和密码");
        }

        // 4、如果查询结果 List 集合长度为 0，说明用户名或密码错误，返回 null
        if (sysUserList == null || sysUserList.size() == 0) {
            return null;
        }

        // 5、在排除掉其它情况后，返回集合中唯一的元素
        return sysUserList.get(0);
    }
}
